﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ComunesMGI.DataTypes;
using ClienteWinMGI.Logica;

namespace ClienteWinMGI.Presentacion
{
    public partial class AsignarIncidentesWP : Form
    {
        private DataCliente _datosCliente;
        private DataSistema _datosSistema;
        private DataWP _datosWP;

        public AsignarIncidentesWP(DataCliente cli, DataSistema sis, DataWP wp)
        {
            InitializeComponent();
            _datosCliente = cli;
            _datosSistema = sis;
            _datosWP = wp;
            CargarIncidentes(_datosCliente, _datosSistema);
            
        }

        private void CargarIncidentes(DataCliente dc, DataSistema ds)
        {
            IIncidentes ii = LogicaFactory.getInstance().getIIncidentes();
            List<DataIncidente> lista= ii.getIncidentes(_datosCliente,_datosSistema);
            
            foreach(DataIncidente di in lista)
            {
                string id= di.IdIncidente;
                string descripcion= di.Descripcion;
                string agregar= "Id= "+ id + " ;" +" Descrpcion= "+descripcion;
                checkLBInc.Items.Add(agregar);
            }
        }

        public DataCliente DatosCliente
        {
            get { return _datosCliente; }
            set { _datosCliente = value; }
        }

        public DataSistema DatosSistema
        {
            get { return _datosSistema; }
            set { _datosSistema = value; }
        }

        public DataWP DatosWP
        {
            get { return _datosWP; }
            set { _datosWP = value; }
        }
       

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnAsociar_Click(object sender, EventArgs e)
        {
            
            if (checkLBInc.SelectedItems.Count == 0)
            {
                Error error = new Error("Error", "Debe seleccionar algun incidente", "Debe seleccionar algun incidente para poder asociarselo al work package");
                error.ShowDialog();
            }
            else {
                List<DataIncidente> listaIncidentesSelec = new List<DataIncidente>();
                
                for (int i = 0; i < checkLBInc.Items.Count; i++)
                {
                    checkLBInc.SelectedItem = i;
                    if (checkLBInc.GetItemChecked(i))
                    {
                        string seleccionado = checkLBInc.ToString();
                        char[] delimitador = { '=', ';' };

                        string[] palabras = seleccionado.Split(delimitador);
                        string id = palabras[1];
                        string descripcion = palabras[3];
                        DataIncidente di = new DataIncidente(id, descripcion);
                        listaIncidentesSelec.Add(di);

                    }
                }
                IIncidentes ii = LogicaFactory.getInstance().getIIncidentes();
                ii.asociarIncidentesWP(_datosCliente, _datosSistema, _datosWP, listaIncidentesSelec);

                Notificacion notificacion = new Notificacion("Incidentes asociados", "Asociacion de Incidentes a Work Package exitosa", "Se han agregado los incidentes seleccionados al Work Package " + _datosWP.Nombre + "del sistema " + _datosSistema.Nombre + " del cliente " + _datosCliente.Nombre);
                notificacion.ShowDialog();
                this.Close();
               
            
            }
            
            
            
        }

        private void chekLBInc_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
